package cn.git.led.utils;


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;

/**
 * Kernel32 失效无法设置系统时间 暂时使用bat
 * 设置系统时间
 *
 * @author yangs
 * @date 2023/05/05
 */
public class SetSystemTime {

   /**
    * Kernel32 失效无法设置系统时间 暂时使用bat
    * <p>
    * 仅支持Windows嗷
    * 设置日期时间蝙蝠
    *
    * @param time     时间
    * @param yyyymmdd 名称
    * @return boolean
    */
   public static boolean setDateTimeBat(String time, String yyyymmdd) {
      try {
         File temDir = new File("C:\\timeTemp");
         String filePath = "setDateTime.bat";
         File batFile = new File(temDir.getPath() + "/" + filePath);

         if (!temDir.exists()) {
            temDir.mkdir();
            batFile.createNewFile();
         }

         FileWriter fw = new FileWriter(filePath);
         BufferedWriter bw = new BufferedWriter(fw);
         bw.write("@echo off\n");
         bw.write("%1 mshta vbscript:CreateObject(\"Shell.Application\").ShellExecute(\"cmd.exe\",\"/c %~s0 ::\",\"\",\"runas\",1)(window.close)&&exit\n");
         bw.write("time "+ time);
         bw.newLine();
         bw.write("date "+ yyyymmdd.replace("-", "/"));
         bw.close();
         fw.close();
         Process process = Runtime.getRuntime().exec(filePath);
         process.waitFor();
         //等上面的执行完毕后再删除文件
         batFile.delete();
         return true;
      } catch (Exception e) {
         e.printStackTrace();
      }
      return false;
   }

}
